Boomi Flow (v1)

Download OpenAPI specification:Download

Admin

Reset Password

The password reset API is only applicable to Flow Builders. For running users, the user identity is managed by the underlying Service (e.g. Salesforce, Box, Google), and therefore user resets should be performed on the underlying system, not within ManyWho. The password reset API requires two separate API calls to complete. The first API call sends the user the password reset notification. The second API call performs the actual password change, based on the token provided in the notification.

If a notification is provided, the redirectUrl property should include two parameters in the content - one for the notification result ({0}) and one for the reset token ({1}). The platform will automatically parse the notification result and callbackUri values at these positions in the content.

The result parameter has the following possible values:

  • OK: The password reset was correctly processed
  • ALREADY_PROCESSED: The password reset token has already been processed by the Platform and the user is re-using the link

To add the password verification URL to the notification, simply add PASSWORD_URL_HERE to the content of the message and the platform will replace this with the actual verification callback URL, which will in turn forward to the redirectUrl.

query Parameters
email
string

The email address of the account to initialize a password reset for

Request Body schema:
reason
string

The reason for the notification. Typically, the reason will be provided as the 'subject' for email notifications.

redirectUrl
string

The Url to redirect the user to once this notification has been processed by the platform.

notificationMessages
Array of objects (NotificationMessageAPI)

The list of notification messages to be sent.

Responses

200

Success

post /api/admin/1/directory/user/password
https://flow.manywho.com/api/admin/1/directory/user/password

Request samples

Content type
No sample

Apply Password Reset

Apply the actual password change for an account, using the token generated from the notification callback sent in the "Reset Password" endpoint.

The token is not provided in the notification, but rather the token is provided after the user clicks on the notification link. The token will either be parsed into the provided redirectUrl (if specified) or provided in the REST response from a GET request to the notification callback URL provided in the notification.

path Parameters
token
required
string <uuid>

The token that was provided to the user as part of the notification callback

Request Body schema:
password
string

The new password to be applied to the flow builder account

Responses

200

Success

post /api/admin/1/directory/user/credential/{token}
https://flow.manywho.com/api/admin/1/directory/user/credential/{token}

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
true

Provisioning

Provision a Tenant

This endpoint requests the provisioning of a new tenant, and also creates a new user if one doesn't exist with the given email address. If a value is given for the notification object, then the provisioning email sent to the user will be overridden with the provided message.

Request Body schema:
tenantName
string

The name of the tenant to create

notification
object (NotificationRequestAPI)
firstName
string

The first name of the user

lastName
string

The last name of the user

email
string

The email of the user

password
string

The password for the user

Responses

204

Success

post /api/admin/1/provisioning
https://flow.manywho.com/api/admin/1/provisioning

Request samples

Content type
No sample

States

The flow state object provides data about a specific instance of a running flow

A flow state provides in-depth information about how users have interacted with a flow, from the data that has been collected in values, to the path of map elements that were travelled, to the users who have interacted with the flow at the various stages of its execution. Flow state data is only available for active flows that have not yet completed.

This API should also not be used for reporting purposes as we have a separate reporting API and reporting infrastructure.

List States

Get a listing of all the flow states in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of states to return

page
integer <int32>
Default: 1

The current page of states

status
string

The status of the states to filter by

from
string <date-time>

An ISO 8601 datetime to filter states from

to
string <date-time>

An ISO 8601 datetime to filter states until

Responses

200

Success

get /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Delete Multiple States

Delete multiple flow states

Request Body schema:

An array of IDs of the states to delete

Array
string <uuid>

Responses

200

Success

delete /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Request samples

Content type
No sample

Load State

Load an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to load

Responses

200

Success

get /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "parentId": "string",
  • "dateCreated": "2020-05-06T12:04:58Z",
  • "dateModified": "2020-05-06T12:04:58Z",
  • "expiresAt": "2020-05-06T12:04:58Z",
  • "currentFlowId":
    {
    },
  • "currentFlowDeveloperName": "string",
  • "currentMapElementId": "string",
  • "currentMapElementDeveloperName": "string",
  • "currentStreamId": "string",
  • "currentRunningUserId": "string",
  • "currentRunningUserEmail": "string",
  • "currentRunningUserExternalId": "string",
  • "externalIdentifier": "string",
  • "manywhoTenantId": "string",
  • "annotations":
    {
    },
  • "stateEntries":
    [
    ],
  • "precommitStateEntry":
    {
    },
  • "values":
    [
    ],
  • "authorizationHeader": "string",
  • "isDone": true,
  • "isExpired": true,
  • "log":
    {
    },
  • "joinUri": "string",
  • "rootFaults":
    {
    },
  • "hasRootFaults": true,
  • "storeId": "string",
  • "frames":
    [
    ]
}

Delete State

Delete an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to delete

Responses

200

Success

delete /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

List States by Flow

Get a listing of all the flow states grouped by flow in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

orderBy
string
Default: "developerName"

The column to order the results by

orderDirection
string
Default: "ASC"

The direction the order will use

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow
https://flow.manywho.com/api/admin/1/states/flow

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow

Get a listing of all the flow states for a specific flow in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}
https://flow.manywho.com/api/admin/1/states/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow Version

Get a listing of all the flow states for a specific flow version in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

version
required
string <uuid>

The version ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}/{version}
https://flow.manywho.com/api/admin/1/states/flow/{id}/{version}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

States

The flow state object provides data about a specific instance of a running flow

A flow state provides in-depth information about how users have interacted with a flow, from the data that has been collected in values, to the path of map elements that were travelled, to the users who have interacted with the flow at the various stages of its execution. Flow state data is only available for active flows that have not yet completed.

This API should also not be used for reporting purposes as we have a separate reporting API and reporting infrastructure.

List States

Get a listing of all the flow states in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of states to return

page
integer <int32>
Default: 1

The current page of states

status
string

The status of the states to filter by

from
string <date-time>

An ISO 8601 datetime to filter states from

to
string <date-time>

An ISO 8601 datetime to filter states until

Responses

200

Success

get /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Delete Multiple States

Delete multiple flow states

Request Body schema:

An array of IDs of the states to delete

Array
string <uuid>

Responses

200

Success

delete /api/admin/1/states
https://flow.manywho.com/api/admin/1/states

Request samples

Content type
No sample

Load State

Load an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to load

Responses

200

Success

get /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "parentId": "string",
  • "dateCreated": "2020-05-06T12:04:58Z",
  • "dateModified": "2020-05-06T12:04:58Z",
  • "expiresAt": "2020-05-06T12:04:58Z",
  • "currentFlowId":
    {
    },
  • "currentFlowDeveloperName": "string",
  • "currentMapElementId": "string",
  • "currentMapElementDeveloperName": "string",
  • "currentStreamId": "string",
  • "currentRunningUserId": "string",
  • "currentRunningUserEmail": "string",
  • "currentRunningUserExternalId": "string",
  • "externalIdentifier": "string",
  • "manywhoTenantId": "string",
  • "annotations":
    {
    },
  • "stateEntries":
    [
    ],
  • "precommitStateEntry":
    {
    },
  • "values":
    [
    ],
  • "authorizationHeader": "string",
  • "isDone": true,
  • "isExpired": true,
  • "log":
    {
    },
  • "joinUri": "string",
  • "rootFaults":
    {
    },
  • "hasRootFaults": true,
  • "storeId": "string",
  • "frames":
    [
    ]
}

Delete State

Delete an individual flow state

path Parameters
id
required
string <uuid>

The ID of the state to delete

Responses

200

Success

delete /api/admin/1/states/{id}
https://flow.manywho.com/api/admin/1/states/{id}

List States by Flow

Get a listing of all the flow states grouped by flow in the current tenant.

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

orderBy
string
Default: "developerName"

The column to order the results by

orderDirection
string
Default: "ASC"

The direction the order will use

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow
https://flow.manywho.com/api/admin/1/states/flow

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow

Get a listing of all the flow states for a specific flow in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}
https://flow.manywho.com/api/admin/1/states/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List States for a Flow Version

Get a listing of all the flow states for a specific flow version in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the flow

version
required
string <uuid>

The version ID of the flow

query Parameters
pageSize
integer <int32>
Default: 10

The number of flow states to return

page
integer <int32>
Default: 1

The current page of flow states

status
string

The status of the state to filter by

from
string <date-time>

An ISO 8601 datetime to filter results from

to
string <date-time>

An ISO 8601 datetime to filter results until

Responses

200

Success

get /api/admin/1/states/flow/{id}/{version}
https://flow.manywho.com/api/admin/1/states/flow/{id}/{version}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Stores

Stores define the location and credentials used to store data from the platform externally

A store is an outside location that implements the External Storage API, used by the platform to store data externally. They are intended as a data residency and compliance solution, for any customers that require greater control about the eventual resting place of their platform data.

Currently, the External Storage API only supports storing states externally.

List Stores

Returns a list of stores in the current tenant.

Responses

200

Success

get /api/admin/1/stores
https://flow.manywho.com/api/admin/1/stores

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Create Store

Creates a new store, generating an ID, a keypair for encrypting incoming API requests and a keypair for ensuring payload integrity.

Request Body schema:

Details to use when creating the store

name
string

A descriptive name of the store

endpoint
string

The endpoint the store is hosted at, which must support HTTPS.

authentication
object (StoreAuthentication)

Responses

200

Success

post /api/admin/1/stores
https://flow.manywho.com/api/admin/1/stores

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "name": "string",
  • "endpoint": "string",
  • "platformKey": "string",
  • "receiverKey": "string"
}

Find Store

Finds a store by ID, in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the store to find

Responses

200

Success

get /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "name": "string",
  • "endpoint": "string",
  • "platformKey": "string",
  • "createdAt": "2020-05-06T12:04:59Z",
  • "updatedAt": "2020-05-06T12:04:59Z"
}

Delete Store

Delete a store from the current tenant. This instantly invalidates any keys from the store that are still in-use.

path Parameters
id
required
string <uuid>

The ID of the store to delete

Responses

200

Success

delete /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Update Store

Updates a store by ID, in the current tenant.

path Parameters
id
required
string <uuid>

The ID of the store to update

Request Body schema:

The properties of the store to update

name
string

A descriptive name of the store

endpoint
string

The endpoint the store is hosted at, which must support HTTPS.

authentication
object (StoreAuthentication)

Responses

200

Success

put /api/admin/1/stores/{id}
https://flow.manywho.com/api/admin/1/stores/{id}

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "name": "string",
  • "endpoint": "string",
  • "platformKey": "string",
  • "createdAt": "2020-05-06T12:04:59Z",
  • "updatedAt": "2020-05-06T12:04:59Z"
}

Migrates data to Store

Starts a migration of data from the current tenant into the selected store.

Request Body schema:

The properties of the migration

storeId
string <uuid>

The id of the store where data will be migrated to

batchSize
integer <int32>

A size of batch that will be used to save states during migration

Responses

200

Success

post /api/admin/1/stores/migrations
https://flow.manywho.com/api/admin/1/stores/migrations

Request samples

Content type
No sample

Used to list all the store migrations, ordered by the creation date

Responses

200

Success

get /api/admin/1/stores/migrations
https://flow.manywho.com/api/admin/1/stores/migrations

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Tenants and Subtenants

A tenant provides a central place for flow builders to build, manage and deploy flows.

Once a tenant has been provisioned, there are various settings available to ensure security is correctly configured and data is properly managed for reporting purposes. The APIs below work for both tenants and subtenants. The only difference between a tenant and and subtenant is that flow builders can move between them using and the tenants are grouped together to ease management.

Load Tenant

Used to get the tenant object for the current tenant. Tenants provide a central place for flow builders to build, manage and deploy flows.

query Parameters
includeSubTenants
boolean
Default: false

Whether to include subtenants in the response

Responses

200

Success

get /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "expiresAt": "2020-05-06T12:04:59Z",
  • "subTenants":
    [
    ],
  • "organization":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "securitySettings":
    {
    },
  • "subdomain": "string",
  • "stateSettings":
    {
    },
  • "tenantSettings":
    {
    },
  • "externalStorageSettings":
    {
    },
  • "restrictions":
    {
    }
}

Update Tenant

Used to update the tenant object for the current tenant. Tenants provide a central place for flow builders to build, manage and deploy flows.

Request Body schema:
developerName
string

The unique developer name for the tenant. The developer name is related to the domain information provided in the builder username.

developerSummary
string

A summary of the tenant. This is typically additional information that will help explain the purpose of the tenant

securitySettings
object (SecuritySettingsAPI)

Specific security settings that should be applied to this tenant, beyond the defaults (excluding subtenants)

subdomain
string

The requested subdomain to register for this tenant. If provided, the subdomain must be unique for the entire platform

stateSettings
object (StateSettingsAPI)

Settings used for state persistence and reporting

tenantSettings
object (TenantSettingsAPI)

Settings that are specific to features used in the tenant

externalStorageSettings
object (ExternalStorageSettingsAPI)
restrictions
object (TenantRestrictionsAPI)

Responses

200

Success

post /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "expiresAt": "2020-05-06T12:04:59Z",
  • "subTenants":
    [
    ],
  • "organization":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "securitySettings":
    {
    },
  • "subdomain": "string",
  • "stateSettings":
    {
    },
  • "tenantSettings":
    {
    },
  • "externalStorageSettings":
    {
    },
  • "restrictions":
    {
    }
}

Delete Tenant

Responses

200

Success

delete /api/admin/1/tenant
https://flow.manywho.com/api/admin/1/tenant

Delete Tenant Data

Request Body schema:
cultures
boolean

Indicates if all non-default cultures should be deleted

flows
boolean

Indicates if all flows should be deleted

pages
boolean

Indicates if all page elements should be deleted

values
boolean

Indicates if all value elements should be deleted

types
boolean

Indicates if all type elements should be deleted

services
boolean

Indicates if all service elements should be deleted

tags
boolean

Indicates if all tag elements should be deleted

snapshots
boolean

Indicates if all flow snapshots should be deleted

states
boolean

Indicates if all flow states should be deleted

macros
boolean

Indicates if all macro elements should be deleted

Responses

200

Success

delete /api/admin/1/tenant/data
https://flow.manywho.com/api/admin/1/tenant/data

Request samples

Content type
No sample

Load Subtenants

Used to list all the subtenants of the current tenant.

Responses

200

Success

get /api/admin/1/tenant/subtenants
https://flow.manywho.com/api/admin/1/tenant/subtenants

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Create Subtenant

Used to create a new subtenant underneath the current tenant. The developerName must be unique, and can only contain letters and numbers, with no spaces.

Request Body schema:
developerName
string
developerSummary
string

Responses

200

Success

post /api/admin/1/tenant/subtenants
https://flow.manywho.com/api/admin/1/tenant/subtenants

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "developerName": "string"
}

Users

Users provide basic information about flow builders and running users in a tenant

Users on the platform are identified via their email. As a result, the email address determines who the user is. The email address is the unique identifier across the entire platform. When running users access a flow, a user is provisioned into the tenant on-demand. In addition, flow builders are included in the user listing.

List Users

Get a listing of all users inside the current tenant.

query Parameters
pageSize
integer <int32>
Default: 30
page
integer <int32>
Default: 1

Responses

200

Success

get /api/admin/1/users
https://flow.manywho.com/api/admin/1/users

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Add User to Tenant

Request Body schema:
role
string
tokens
Array of objects (UserTokenAPI)
id
string <uuid>
firstName
string
lastName
string
email
string
password
string
verified
boolean
createdAt
string <date-time>
organizations
Array of objects (OrganizationMinimal)
tenants
Array of objects (UserTenantAPI)

Responses

200

Success

post /api/admin/1/users
https://flow.manywho.com/api/admin/1/users

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "role": "string",
  • "tokens":
    [
    ],
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "password": "string",
  • "verified": true,
  • "createdAt": "2020-05-06T12:04:59Z",
  • "organizations":
    [
    ],
  • "tenants":
    [
    ]
}

Load User

Load an individual user from the current tenant.

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "role": "string",
  • "tokens":
    [
    ],
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "password": "string",
  • "verified": true,
  • "createdAt": "2020-05-06T12:04:59Z",
  • "organizations":
    [
    ],
  • "tenants":
    [
    ]
}

Update User

Update information for an individual user in the current tenant.

path Parameters
id
required
string <uuid>
Request Body schema:
role
string
tokens
Array of objects (UserTokenAPI)
id
string <uuid>
firstName
string
lastName
string
email
string
password
string
verified
boolean
createdAt
string <date-time>
organizations
Array of objects (OrganizationMinimal)
tenants
Array of objects (UserTenantAPI)

Responses

200

Success

put /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "role": "string",
  • "tokens":
    [
    ],
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "password": "string",
  • "verified": true,
  • "createdAt": "2020-05-06T12:04:59Z",
  • "organizations":
    [
    ],
  • "tenants":
    [
    ]
}

Remove User from Tenant

path Parameters
id
required
string <uuid>

Responses

200

Success

delete /api/admin/1/users/{id}
https://flow.manywho.com/api/admin/1/users/{id}

Load the Current User

Get the currently-authenticated user's information

Responses

200

Success

get /api/admin/1/users/me
https://flow.manywho.com/api/admin/1/users/me

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "password": "string",
  • "verified": true,
  • "createdAt": "2020-05-06T12:04:59Z",
  • "organizations":
    [
    ],
  • "tenants":
    [
    ]
}

Load the Current User's settings

Load the settings for the currently-authenticated user

Responses

200

Success

get /api/admin/1/users/me/settings
https://flow.manywho.com/api/admin/1/users/me/settings

Response samples

Content type
Copy
Expand all Collapse all
{
  • "notifications":
    {
    }
}

Update the Current User's settings

Update the settings for the currently-authenticated user

Request Body schema:
notifications
object (UserTenantSettingsNotificationsAPI)

Responses

200

Success

put /api/admin/1/users/me/settings
https://flow.manywho.com/api/admin/1/users/me/settings

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "notifications":
    {
    }
}

Assets

List Assets

Get a listing of all the assets in the current tenant

Responses

200

Success

get /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Delete Asset

Delete an individual asset (or folder)

Request Body schema:
contentType
string
key
string
name
string
modifiedAt
string <date-time>
publicUrl
string
size
integer <int64>

Responses

200

Success

delete /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
No sample

Move Asset

Move an asset from one location to another (can also be used to rename an asset).

Request Body schema:
oldKey
string

The key of the asset to move

newKey
string

The key to move the asset to

Responses

200

Success

put /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
No sample

Create Folder

Create an empty "folder" in the current tenant's asset storage

Request Body schema:
contentType
string
key
string
name
string
modifiedAt
string <date-time>
publicUrl
string
size
integer <int64>

Responses

200

Success

post /api/draw/1/assets
https://flow.manywho.com/api/draw/1/assets

Request samples

Content type
No sample

Generate Upload URL

Generate a signed upload URL, which should be used to submit the asset to (using PUT). A contentType is required in this request.

Request Body schema:
contentType
string
key
string
name
string
modifiedAt
string <date-time>
publicUrl
string
size
integer <int64>

Responses

200

Success

post /api/draw/1/assets/upload
https://flow.manywho.com/api/draw/1/assets/upload

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
"string"

Authentication

Authenticate flow builders before using the Admin, Draw, Packaging and Translate APIs

Once a tenant and flow builder have been provisioned, you can authenticate using the Draw API. The returned token should be used in the standard HTTP Authorization header when performing any operations against the various supported APIs.

Authenticate

Request Body schema:
username
string

The username for your account in the directory

password
string

The password for your account in the directory

Responses

200

Success

post /api/draw/1/authentication
https://flow.manywho.com/api/draw/1/authentication

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
"string"

Switch Tenant

path Parameters
tenant
required
string <uuid>

The ID of the tenant to authenticate into

Responses

200

Success

get /api/draw/1/authentication/{tenant}
https://flow.manywho.com/api/draw/1/authentication/{tenant}

Response samples

Content type
Copy
Expand all Collapse all
"string"

Draw

Get Custom Styles

path Parameters
tenantId
required
string

Responses

200

Success

get /css/tenant/{tenantId}/customstyles
https://flow.manywho.com/css/tenant/{tenantId}/customstyles

List Element Dependents

List the flattened tree of elements that depends on a specific element.

path Parameters
id
required
string <uuid>

The ID of the element to list dependents of

query Parameters
pageSize
integer <int32>
Default: 50

The number of dependents to return per page

page
integer <int32>
Default: 1

The current page number of dependents

Responses

200

Success

get /api/draw/1/dependents/{id}
https://flow.manywho.com/api/draw/1/dependents/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List Element Dependencies

List the flattened tree of elements that a specific element depends on, including all registered dependencies of dependencies.

path Parameters
id
required
string <uuid>

The ID of the element to list dependencies of

query Parameters
pageSize
integer <int32>
Default: 50

The number of dependencies to return per page

page
integer <int32>
Default: 1

The current page number of dependencies

Responses

200

Success

get /api/draw/1/dependencies/{id}
https://flow.manywho.com/api/draw/1/dependencies/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Flow

Flows represent an entire application

Flows represent an atomic package of elements that when run, are fully versioned. Flows can reference other flows using a "flow out" or by messaging other flows in the tenant using the Runtime Service. When referencing flows (parent or subflows), the platform will always take the latest activated and default version of the flow.

When editing elements in a flow, you do not do this through this section of the APIs. Each element type has its own API endpoint for managing objects, etc.

As with group elements, a flow can also have permissions. However, unlike the group element, if a user cannot authenticate to a flow, they cannot access any part of the flow state. Effectively, the flow authorization protects your flow application from any access by running users that cannot successfully authenticate with the provided authorization criteria. Therefore any group elements act as a subset of authorization. The running users must first authenticate successfully into the flow and subsequently authenticate into any group elements. Further to this, there's no requirement that the flow and group elements use the same service for authentication. Flow builders can build flows that authenticate across multiple systems, move from unauthenticated to authenticated access, etc.

Create/Update Flow

Used to create new flows or update existing ones. The flow object represents an entire flow application.

Request Body schema:
editingToken
string <uuid>

A unique token for this particular editing session

id
object (FlowIdAPI)

A composite unique identifier assigned by the platform, which should not be included for new flows.

developerName
string

The developer name for the flow. When referencing flows by name, this is the name you should use in your referencing.

developerSummary
string

The developer summary the author provided to give more information about the Flow.

startMapElementId
string

The unique identifier for the first element in the flow. This element is always of the START map element type.

allowJumping
boolean

Indicates that the builder of the flow will allow users to jump to any position in the Flow regardless of outcomes and/or navigation.

stateExpirationLength
integer <int32>
authorization
object (GroupAuthorizationAPI)
restrictions
object (FlowRestrictionsAPI)

Responses

200

Success

post /api/draw/1/flow
https://flow.manywho.com/api/draw/1/flow

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

List Flows

Used to list and filter existing flows.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of flows where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of flows where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter for querying flows

Responses

200

Success

get /api/draw/1/flow
https://flow.manywho.com/api/draw/1/flow

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Flow

Used to get an existing flow by ID.

path Parameters
id
required
string <uuid>

The unique identifier for the Flow

Responses

200

Success

get /api/draw/1/flow/{id}
https://flow.manywho.com/api/draw/1/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

Delete Flow

Used to delete an existing flow

path Parameters
id
required
string

The unique identifier for the flow

Responses

200

Success

delete /api/draw/1/flow/{id}
https://flow.manywho.com/api/draw/1/flow/{id}

List Elements in Flow

Used to list all the elements of a type used in a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to list

Responses

200

Success

get /api/draw/1/element/flow/{flow}/{elementType}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Import Element into Flow

Used to import an existing element into a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to import

id
required
string <uuid>

The ID of the element to import

Responses

200

Success

post /api/draw/1/element/flow/{flow}/{elementType}/{id}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}/{id}

Remove Element from Flow

Used to remove an imported element from a flow

path Parameters
flow
required
string <uuid>

The unique identifier for the flow

elementType
required
string

The element type to remove

id
required
string <uuid>

The ID of the element to remove

Responses

200

Success

delete /api/draw/1/element/flow/{flow}/{elementType}/{id}
https://flow.manywho.com/api/draw/1/element/flow/{flow}/{elementType}/{id}

Flow Graph

The Flow Graph object provides the coordinate and basic configuration information of map and group elements.

The Flow Graph object is typically used for editing the layout of the flow for flow builders. This API should not be used for creating new flows, but rather to manage map and group elements in an existing flow. The focus of this API is to allow flow builders to make coordinate changes to these elements while ensuring other flow builders are notified of these changes and can be updated in realtime.

Update Flow Graph

Used to update a flow graph.

Request Body schema:
mapElements
Array of objects (MapElementAPI)

An array of map elements that are part of the flow graph.

groupElements
Array of objects (GroupElementAPI)

An array of group elements that are part of the flow graph.

editingToken
string <uuid>

A unique token for this particular editing session

id
object (FlowIdAPI)

A composite unique identifier assigned by the platform, which should not be included for new flows.

developerName
string

The developer name for the flow. When referencing flows by name, this is the name you should use in your referencing.

developerSummary
string

The developer summary the author provided to give more information about the Flow.

startMapElementId
string

The unique identifier for the first element in the flow. This element is always of the START map element type.

allowJumping
boolean

Indicates that the builder of the flow will allow users to jump to any position in the Flow regardless of outcomes and/or navigation.

stateExpirationLength
integer <int32>
authorization
object (GroupAuthorizationAPI)
restrictions
object (FlowRestrictionsAPI)

Responses

200

Success

post /api/draw/1/graph/flow
https://flow.manywho.com/api/draw/1/graph/flow

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "tenantId": "string",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "mapElements":
    [
    ],
  • "groupElements":
    [
    ],
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    },
  • "restrictions":
    {
    }
}

Get Flow Graph

Used to get an existing flow graph. The flow graph provides the coordinate and basic configuration information of map and group elements.

path Parameters
flow
required
string

The unique identifier for the flow

Responses

200

Success

get /api/draw/1/graph/flow/{flow}
https://flow.manywho.com/api/draw/1/graph/flow/{flow}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "tenantId": "string",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "mapElements":
    [
    ],
  • "groupElements":
    [
    ],
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    },
  • "restrictions":
    {
    }
}

Flow Snapshot

The flow snapshot is the package that is sent to the platform runtime engine.

Without a flow snapshot, a flow cannot be accessed by running users. The flow snapshot contains all the fully versioned elements that are needed for the flow to execute (excluding subflows). In the tooling, each time a flow is run or published, a flow snapshot is taken. This means you then have a version of the flow that can also be reverted if flow builders make a range of mistakes and would like to go back to a previous snapshot.

The flow snapshot also acts as a version system as all metadata for the flow can be accessed, and external tools can be used to diff for changes. Equally, for compliance, a customer can access the flow snapshots to get a complete picture of which flow the running user(s) were running at any particular point in time.

Activate a Flow Snapshot

Used to activate and/or make default a flow snapshot version

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

isDefault
required
boolean

If this snapshot should be the default version for running users

isActivated
required
boolean

If this snapshot should be accessible to running users to run

Responses

200

Success

post /api/draw/1/flow/activation/{flow}/{version}/{isDefault}/{isActivated}
https://flow.manywho.com/api/draw/1/flow/activation/{flow}/{version}/{isDefault}/{isActivated}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

Revert a Flow Snapshot

Used to take an flow snapshot and apply it to the current flow being modelled. This is equivalent to undoing changes to a flow for all flow builders.

To revert a flow snapshot for running users, simply activate and make default the appropriate previous flow snapshot version.

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

Responses

200

Success

post /api/draw/1/flow/revert/{flow}/{version}
https://flow.manywho.com/api/draw/1/flow/revert/{flow}/{version}

Create Flow Snapshot

Used to create a flow snapshot.

path Parameters
flow
required
string

The unique identifier for the flow

Request Body schema:
string

Responses

200

Success

post /api/draw/1/flow/snap/{flow}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

List Flow Snapshots

Used to get the list of all snapshots for a particular flow.

path Parameters
flow
required
string <uuid>
query Parameters
filter
string

Responses

200

Success

get /api/draw/1/flow/snap/{flow}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Flow Snapshot

Used to get a single flow snapshot.

path Parameters
flow
required
string

The unique identifier for the flow

version
required
string

The unique identifier for the flow version

Responses

200

Success

get /api/draw/1/flow/snap/{flow}/{version}
https://flow.manywho.com/api/draw/1/flow/snap/{flow}/{version}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "navigationElements":
    [
    ],
  • "mapElements":
    [
    ],
  • "groupElements":
    [
    ],
  • "pageElements":
    [
    ],
  • "valueElements":
    [
    ],
  • "macroElements":
    [
    ],
  • "serviceElements":
    [
    ],
  • "typeElements":
    [
    ],
  • "tagElements":
    [
    ],
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

Group Element

The group element object represents any group or element in your flow that can contain map elements.

Group elements are used to add additional behavior to map elements in your flow. The group element currently only supports the ability to change the authentication context of the map elements it contains. This allows builders to change the permissions for map elements contained in the group element and restrict the ability for running users to edit or take action on any outcomes.

Create/Update Group Element

Used to create new group elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

Unique identifier for the flow containing the group element

Request Body schema:
updateByName
boolean

Indicates if the platform should attempt to find a group with the same developer name as the one provided and match them up by name as opposed to by ID.

groupElementId
string

The unique identifier for the group element that holds this group element.

x
integer <int32>

The x location of the Group on the Flow diagram.

y
integer <int32>

The y location of the Group on the Flow diagram.

height
integer <int32>

The height of the Group on the Flow diagram.

width
integer <int32>

The width of the Group on the Flow diagram.

authorization
object (GroupAuthorizationAPI)
id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/group
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "updateByName": true,
  • "groupElementId": "string",
  • "x": 0,
  • "y": 0,
  • "height": 0,
  • "width": 0,
  • "authorization":
    {
    },
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Group Elements

Used to list and filter existing group elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/group
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Group Element

Used to get an existing group element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

id
required
string <uuid>

The unique identifier for the group element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/group/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "updateByName": true,
  • "groupElementId": "string",
  • "x": 0,
  • "y": 0,
  • "height": 0,
  • "width": 0,
  • "authorization":
    {
    },
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Group Element

Used to delete an existing group element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the group element

id
required
string <uuid>

The unique identifier for the group element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/group/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/group/{id}

Macro Element

Create/Update Macro Elements

Used to create new macro elements or update existing ones.

Request Body schema:
code
string

The JavaScript code for the Macro.

updateByName
boolean

Indicates if the platform should attempt to find a Macro with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/macro
https://flow.manywho.com/api/draw/1/element/macro

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "code": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Macro Elements

Used to list and filter existing macro elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/macro
https://flow.manywho.com/api/draw/1/element/macro

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Macro Element

Used to get an existing macro element.

path Parameters
id
required
string <uuid>

The unique identifier for the macro element

Responses

200

Success

get /api/draw/1/element/macro/{id}
https://flow.manywho.com/api/draw/1/element/macro/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "code": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Macro Element

Used to delete an existing macro element.

path Parameters
id
required
string <uuid>

The unique identifier for the macro element

Responses

200

Success

delete /api/draw/1/element/macro/{id}
https://flow.manywho.com/api/draw/1/element/macro/{id}

Map Element

The map element object represents any node or element in your flow diagram.

Map elements are used to set out the actions and journey of your flow. Each map element performs an action, which may be to present the user with information, collect information, or perform logical actions such as inserting records into a database, executing business rules, or sending messages to a 3rd party application.

There's a lot of functionality packed into map elements, and that has been separated out in the sections below.

Data Actions

A data action is used to perform create, read, update, or delete (CRUD) type operations on a service. There are a number of features that make data actions particularly powerful:

  • You do not need to manage INSERT vs. UPDATE operations. We automatically track the objects in your flow and know if it is a new object to be inserted or an update to an existing object. This is done using our SAVE operation. We do not separate INSERT and UPDATE.
  • You can configure filters using our common metadata. This means you do not need to understand the query language of the underlying service - you can create queries using a standard notation and we automatically translate this notation into SQL (RDBMS), SOQL (Salesforce), ZOQL (Zuora), etc.
  • The data action automatically knows where the data needs to go. There is no need to map fields into the database as this is already configured in the type. In addition, a number of services also support “smart save” which does a smart merge of data collected/changed in the flow with data already stored in the service.
  • If you need advanced data management capabilities such as summary roll-ups or joined tables, you can configure this using "commands" (as supported by the underlying service implementation).

Listeners

A Listener is used to listen to events on objects stored or managed by a service. When an event occurs (e.g. a record is updated) in the underlying application (e.g. Salesforce), the platform will inform the executing flow of the event so it can take appropriate action.

Listeners work as follows:

  1. You send the service the objects you want to listen to (referencing the appropriate value). In addition, you specify the type of event you’re interested in (e.g. record created).
  2. The service will notify the platform when that event has happened on the associated object(s). This will populate the referenced value with the latest data from the service.
  3. You specify the outcomes (with comparisons/rules) under which you "accept" the event and the path the flow should follow. If those comparisons/rules are met, the flow will proceed to the next map element in the flow as defined by the matching outcome. If not, the flow will continue to wait until the appropriate event occurs.

Message Actions

A Message Action is used to perform general API operations on a Service. There are a number of features that make Message Actions particularly powerful:

  • Multiple inputs/multiple outputs: When executing a message action, the service can specify multiple inputs and multiple outputs post processing. E.g. you might have a service that moves a file from one folder to another (in Box). For this you’d specify the file that needs to be moved and the location you’d like to move it from and to (these would be the inputs). The outputs might be the file with revised information regarding its location and permissions.
  • They can "wait": When executing a message action, it can sometimes take some time to complete the request. Alternatively, the request may need to wait for a response. E.g. if you are sending a text message via Twilio and you want to have the flow wait for the response before proceeding. Other services may be used precisely to cause the flow to wait, e.g. our Timer service that allows you to stop or wait the flow for a timer interval or until a specific date. A "wait" can be created by building comparison/rules (e.g. the rules under which the flow will proceed down a particular path). The flow will only follow an outcome until the rules are satisfied.

It's important to note that message actions are described in the service definition. The purpose of the message actions is to map values in the flow to the inputs and outputs specified by the service.

A navigation override is used to alter the functionality of navigation in your flow. As running users go through a flow, it is often useful to alter how the navigation works. As a result, when the user gets to a particular map element, you can execute changes to the navigation. These changes will persist until altered by another map element. This can be useful in a variety of use-cases:

  • Certain parts of the navigation should only be functional once a certain portion of the flow has been completed. You can either disable or only make visible these parts of the navigation when ready. For example, you might want to disable navigation steps 3-5 until step 2 in your Flow has been completed.
  • You want the navigation to remember where the user was in a particular section of your flow. For example, the user might be going through a sequence of diagnostic steps under a "Diagnose" navigation item. If the user then clicks on an "FAQ" navigation item to answer a quick question, by default when they click back on "Diagnose" it will restart the diagnostic section. If each map element in the "Diagnose" section overrides the navigation to point to that particular map element, when the user clicks on the "Diagnose" navigation item, it will take them to that particular map element, not back to the start.

Operations

An operation is used to make a change to a value or execute a macro in your flow. Each operation can be ordered allowing builders to do operations in a particular sequence - as individual commands performed on values. Here are some examples of operations:

  • You want to assign the content of a value so the user doesn’t need to do it manually.
  • You want to get the next object from a list of objects in your flow.
  • You want to execute a macro that performs complex logic and business rules on values in your flow.

In mathematics, an operation would be something like: x = 3

Outcomes

An outcome is used to make move the running user(s) from one map element in the flow to another or from one map element into another flow. An outcome can represent a button the running user(s) can click, or it can represent a path the executing flow should follow based on logical operations in the flow. Outcomes can be combined with business rules (provided by comparison/rules) to determine the path of execution based on pre-determined logic.

Vote

The vote object is used to configure voting or multi-user approval options on an outcome. By configuring the vote, you can determine if a set number of running users or a percentage of running users (within the authentication context of the map element) must click on a particular outcome before the flow will proceed down that path. For example, before the approval is accepted, more than two running users must click on the “Approve” outcome before the flow will progress.

The implementation of the vote algorithm is determined by the service. Builders should refer to the documentation of the service being used. The first running user to click on an outcome contained in a voting map element will force the platform to “lock” the page from any further user inputs. Effectively the map element becomes read-only until the vote is completed.

Create/Update Map Elements

Used to create new map elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

Request Body schema:
operations
Array of objects (OperationAPI)

The list of operations that should be performed when this Map Element executes. Operations are used to change the value of Values in the executing Flow (State).

listeners
Array of objects (ListenerAPI)

The list of listeners that should be registered when this Map Element executes.

viewMessageAction
object (MessageActionAPI)
messageActions
Array of objects (MessageActionAPI)

The list of message actions that should be executed when this Map Element executes. The message action objects define the interface of inputs/outputs for calling against each Service message.

dataActions
Array of objects (DataActionAPI)

The list of data actions that should be executed when this map element executes. The data action objects define the values and bindings that should be used to perform CRUD operations against each service and value.

navigationOverrides
Array of objects (NavigationOverrideAPI)

The list of navigation overrides that should be applied when this Map Element executes.

vote
object (VoteAPI)
clearNavigationOverrides
boolean
postUpdateToStream
boolean

Indicates if this Map Element should post an update to the collaboration stream.

userContent
string

The content that should be shown to the user at this step in the Flow. This property should only be used for very simple Flows and informational UI. For anything more than simple messaging, use the Page and associate it with this Map Element using the pageElementId property.

statusMessage
string

The content that should be shown to the user while waiting for a system step to complete.

postUpdateMessage
string

The content of the message that should be posted to the collaboration stream.

notAuthorizedMessage
string

The content that should be shown to the user if they are not authorized to take action on this Map Element.

postUpdateWhenType
string

The point at which the post should be made to the collaboration stream.

updateByName
boolean

Indicates if the platform should attempt to find a Type with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

groupElementId
string

The unique identifier for the Group that contains this Map Element. If a Map Element is inside a Group, it inherits certain behaviors of the parent Group. For example, a Swimlane Group wraps all child Map Elements in a security context.

x
integer <int32>

The x location of the Map Element on the Flow diagram.

y
integer <int32>

The y location of the Map Element on the Flow diagram.

pageElementId
string
outcomes
Array of objects (OutcomeAPI)

The list of outcomes that are available for this Map Element. An Outcome is used to connect the flow of execution from one Map Element in the Flow to another. An Outcome can take the form of a Page button, but also define system steps such as rules.

subflow
object (SubflowAPI)
id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "operations":
    [
    ],
  • "listeners":
    [
    ],
  • "viewMessageAction":
    {
    },
  • "messageActions":
    [
    ],
  • "dataActions":
    [
    ],
  • "navigationOverrides":
    [
    ],
  • "vote":
    {
    },
  • "clearNavigationOverrides": true,
  • "postUpdateToStream": true,
  • "userContent": "string",
  • "statusMessage": "string",
  • "postUpdateMessage": "string",
  • "notAuthorizedMessage": "string",
  • "postUpdateWhenType": "string",
  • "updateByName": true,
  • "groupElementId": "string",
  • "x": 0,
  • "y": 0,
  • "pageElementId": "string",
  • "outcomes":
    [
    ],
  • "subflow":
    {
    },
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Map Elements

Used to filter existing map elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map elements

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Map Element

Used to get an existing map element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

id
required
string <uuid>

The unique identifier for the map element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "operations":
    [
    ],
  • "listeners":
    [
    ],
  • "viewMessageAction":
    {
    },
  • "messageActions":
    [
    ],
  • "dataActions":
    [
    ],
  • "navigationOverrides":
    [
    ],
  • "vote":
    {
    },
  • "clearNavigationOverrides": true,
  • "postUpdateToStream": true,
  • "userContent": "string",
  • "statusMessage": "string",
  • "postUpdateMessage": "string",
  • "notAuthorizedMessage": "string",
  • "postUpdateWhenType": "string",
  • "updateByName": true,
  • "groupElementId": "string",
  • "x": 0,
  • "y": 0,
  • "pageElementId": "string",
  • "outcomes":
    [
    ],
  • "subflow":
    {
    },
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Map Element

Used to delete an existing map element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the map element

id
required
string <uuid>

The unique identifier for the map element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/map/{id}

Navigation Element

The navigation element object provides a menu or navigation structure allowing users to move around your flow application in an unstructured way.

Navigation elements are used to set out the structure and map element locations which users can jump to directly. As a result, your map elements act more like web pages on a website than steps in a process. The base properties of the navigation element are outlined here.

Create/Update Navigation Elements

Used to create new navigation elements or update existing ones.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

Request Body schema:
label
string

The label to display to the user.

navigationItems
Array of objects (NavigationItemAPI)

The navigation items that are available for this navigation. The navigation items are the "links" the user can use to navigate around your flow.

tags
Array of objects (PageTagAPI)

The list of tags that are associated with this navigation.

updateByName
boolean

Indicates if the platform should attempt to find a navigation with the same developer name as the one provided and match them up by name as opposed to by ID. This is useful when creating scripts to create flows, as you can use the developerName property as the reference as opposed to needing to know the IDs of all created elements.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "label": "string",
  • "navigationItems":
    [
    ],
  • "tags":
    [
    ],
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Navigation Elements

Used to filter existing navigation elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation elements

query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Navigation Element

Used to get an existing navigation element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

id
required
string <uuid>

The unique identifier for the navigation element

Responses

200

Success

get /api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "label": "string",
  • "navigationItems":
    [
    ],
  • "tags":
    [
    ],
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Navigation Element

Used to delete an existing navigation element.

path Parameters
editingToken
required
string <uuid>

The active editing token for the flow being edited

flow
required
string <uuid>

The unique identifier for the flow containing the navigation element

id
required
string <uuid>

The unique identifier for the navigation element

Responses

200

Success

delete /api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/draw/1/flow/{flow}/{editingToken}/element/navigation/{id}

Page Element

The page element object provides the structure of your pages or screens.

The purpose of the page element is to allow flow builders to lay out the structure of the pages the users will interact with as part of the flow application. The page element is extremely extensible and allows developers to create their own components and containers as needed to give users the best possible experience using your flow application. The base properties of the page element are outlined here.

Page Containers

A page container is used to determine the scaffolding of your page. Page containers allow flow builders to set out the relative position of page components on the page. In comparison with HTML5, a page container would be equivalent to a div tag. As a result, page containers do not have any value or input, they are simply used to determine the layout or scaffolding aspects of the page.

The type of page container is determined by the containerType property and developers looking to build custom containers should use a unique containerType name to identify their container implementation. The properties outlined here are the common attributes for typical containers, however, if these do not suffice, developers should use the attributes to extend the attributes for their own specific needs. It’s important to note that each of the properties here provides features and the engine does not have any understanding of one container type from another.

Page Components

A page component is used to show or edit information on your page. In comparison with HTML5, a page component would be equivalent to an input, textarea, or similar tag. As a result, page components typically do have a value or input, and are used to prompt the user for some form or input or to view a particular piece of information on the page.

The type of page component is determined by the componentType property and developers looking to build custom components should use a unique componentType name to identify their component implementation. The properties outlined here are the common attributes for typical components, however, if these do not suffice, developers should use the attributes to extend the attributes for their own specific needs. It’s important to note that each of the properties here provides features and the engine does not have any understanding of one component type from another.

Page Conditions

Page conditions are used to make your pages dynamic. Based on a set of page rules, the page conditions can assign values to your page components but also change various properties on your page components and containers such as: required, editable, visible. Page components can also have data refreshed and objectDataRequest information dynamically assigned so you can, for example, change table filters. This gives flow builders the ability to provide single pages that can provide the running user(s) with a very dynamic experience.

Page Operation Assignment

The assignment object should be used when a value or piece of metadata for a component or container needs to be changed. For example, a page component should be set as required under a specific set of conditions. Or a page container should no longer be visible under another set of conditions.

Page Operation Filter

The filter object should be used when applying filters based on conditions. For example, the list of options in a combobox should be limited based on a checkbox being checked. The filter object can be applied to lists as well as objectDataRequests.

Page Object Reference

The page object reference is a general purpose object for referencing data and metadata on the page. It can be configured to reference data that is not formally stored into the flow state and also value elements that are.

Create/Update Page Elements

Used to create new page elements or update existing ones.

Request Body schema:
label
string

The label for the page element. This is usually used as the title of the page.

pageContainers
Array of objects (PageContainerAPI)

The tree hierarchy of page containers that define the scaffolding of the page layout. Conceptually, page containers are similar to HTML5 div tags. If no page containers are provided, it is assumed that all components will be oriented in a vertical flow layout.

pageComponents
Array of objects (PageComponentAPI)

The list of components to be embedded on the page. Each component is associated with a page container for relative positioning information. Conceptually, page containers are similar to HTML5 form controls and/or specific layout blocks containing images or content.

pageConditions
Array of objects (PageConditionAPI)

The list of page conditions that set out the rules that should be evaluated and the actions that should be taken if those rules evaluate to true. Page conditions make it possible to define complex UI event models.

stopConditionsOnFirstTrue
boolean

Indicates if the engine should continue to execute rules and actions on the page if a condition evaluates to true. This makes it possible to deal with page rules that may conflict if all run for all events on the page.

attributes
object

Key value pairs that provide additional information for the page layout to be rendered. Builders should refer to the documentation of the UI code being used.

tags
Array of objects (PageTagAPI)

The list of page tags that allow additional metadata to be applied to various page objects: components, controls and the overall page. Conceptually tags can be used to mimic HTML and CSS but can also be used to provide data to enrich functionality on the page.

updateByName
boolean

Indicates if the platform should attempt to find a page element with the same developer name as the one provided and match them up by name as opposed to by ID. This is useful when creating scripts to create flows, as you can use the developerName property as the reference as opposed to needing to know the IDs of all created elements.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/page
https://flow.manywho.com/api/draw/1/element/page

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "label": "string",
  • "pageContainers":
    [
    ],
  • "pageComponents":
    [
    ],
  • "pageConditions":
    [
    ],
  • "stopConditionsOnFirstTrue": true,
  • "attributes":
    {
    },
  • "tags":
    [
    ],
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Page Elements

Used to list and filter existing page elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/page
https://flow.manywho.com/api/draw/1/element/page

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Page Element

Used to get an existing page element.

path Parameters
id
required
string <uuid>

The unique identifier for the page element

Responses

200

Success

get /api/draw/1/element/page/{id}
https://flow.manywho.com/api/draw/1/element/page/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "label": "string",
  • "pageContainers":
    [
    ],
  • "pageComponents":
    [
    ],
  • "pageConditions":
    [
    ],
  • "stopConditionsOnFirstTrue": true,
  • "attributes":
    {
    },
  • "tags":
    [
    ],
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Page Element

Used to delete an existing page element.

path Parameters
id
required
string <uuid>

The unique identifier for the page element

Responses

200

Success

delete /api/draw/1/element/page/{id}
https://flow.manywho.com/api/draw/1/element/page/{id}

Service Element

Describe Service Element

Used to obtain a describe response for a service element.

Request Body schema:

The details required to describe the service element

culture
object (CultureAPI)
uri
string

The Uri for the service to describe.

httpAuthenticationUsername
string
httpAuthenticationPassword
string
httpAuthenticationClientCertificate
string
httpAuthenticationClientCertificatePassword
string
version
string
configurationValues
Array of objects (EngineValueAPI)

Configuration values provided by the end user to help the describe.

Responses

200

Success

post /api/draw/1/element/service/describe
https://flow.manywho.com/api/draw/1/element/service/describe

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "configurationValues":
    [
    ],
  • "providesLogic": true,
  • "providesViews": true,
  • "providesDatabase": true,
  • "providesIdentity": true,
  • "providesSocial": true,
  • "providesFiles": true,
  • "providesAutoBinding": true
}

Install Service Element

Used to obtain an install response for a service element.

Request Body schema:

The details required to install the service element

culture
object (CultureAPI)
uri
string

The Uri for the service to describe.

httpAuthenticationUsername
string
httpAuthenticationPassword
string
httpAuthenticationClientCertificate
string
httpAuthenticationClientCertificatePassword
string
version
string
configurationValues
Array of objects (EngineValueAPI)

Configuration values provided by the end user to help the describe.

Responses

200

Success

post /api/draw/1/element/service/install
https://flow.manywho.com/api/draw/1/element/service/install

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "actions":
    [
    ],
  • "types":
    [
    ],
  • "version": "string"
}

Create/Update Service Elements

Used to create new service elements or update existing ones.

Request Body schema:
uri
string

The location of the Service implementation for the platform to callout against.

format
string

The REST messaging format to use to communicate with this service. Currently the only valid value for this property is: JSON

configurationValues
Array of objects (ServiceValueRequestAPI)

The list of configuration value mappings the service needs to function. Each entry provides a reference to a Value in the Flow that contains the configuration value needed by the service plugin.

providesLogic
boolean

Indicates if the Service provides functionality for 'logic'. Logic allows authors to make API calls as part of elements that support messaging: 'Message', 'Page', and 'Remote Page' currently. Messaging is used for asynchronous and synchronous use-cases.

providesViews
boolean

Indicates if the Service provides functionality for 'views'. A View allows authors to build Flows that include 'Remote Page' elements - e.g. the UI of the page is not actually hosted on the ManyWho platform, but rather the UI is provided by the external service.

providesFiles
boolean

Indicates if the Service provides functionality for 'files'. Files allows the author to reference files and content from the service as dynamic references - meaning that the files and content can be managed outside of ManyWho, but embedded in your Flows.

providesDatabase
boolean

Indicates if the Service provides functionality for 'database'. Database functionality allows the author to map their Typed Objects and Lists back to this service for storage. The service then acts as the persistence implementation to store and retrieve the data as neede by the Flow.

providesIdentity
boolean

Indicates if the Service provides functionality for 'identity'. Identity functionality allows the author to manage permissions to their Flows and sections of their Flows (via Swimlanes) using this service as the directory. This also allows users to login to the Flows using the information stored in this service directory.

providesSocial
boolean

Indicates if the Service provides functionality for 'social'. Social allows the author to add features for feed, file and user collaboration to their Flows using this service as the underlying social network.

providesLocation
boolean

Indicates if the Service provides functionality for 'location'. ManyWho optionally collects location information about the user when running a Flow. This information can be used to make decisions about permissions and also data filtering - though it is up to the service to implement this functionality.

providesAutoBinding
boolean
actions
Array of objects (ServiceActionRequestAPI)

The list of 'logic' operations that are available for the service. If the underlying service 'providesLogic', this is where the 'interface' for those logic operations should be stored. This allows the author to know what inputs and outputs are provided by the actions provided by this Service.

install
object (ServiceInstallRequestAPI)
updateByName
boolean

Indicates if the platform should attempt to find a Service with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created elements.

sendDecryptedValues
boolean
httpAuthenticationUsername
string
httpAuthenticationPassword
string
httpAuthenticationClientCertificateReference
string
httpAuthenticationClientCertificatePasswordReference
string
version
string
id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/service
https://flow.manywho.com/api/draw/1/element/service

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "uri": "string",
  • "format": "string",
  • "configurationValues":
    [
    ],
  • "providesLogic": true,
  • "providesViews": true,
  • "providesFiles": true,
  • "providesDatabase": true,
  • "providesIdentity": true,
  • "providesSocial": true,
  • "providesLocation": true,
  • "providesAutoBinding": true,
  • "actions":
    [
    ],
  • "install":
    {
    },
  • "updateByName": true,
  • "sendDecryptedValues": true,
  • "httpAuthenticationUsername": "string",
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationClientCertificateReference": "string",
  • "httpAuthenticationClientCertificatePasswordReference": "string",
  • "version": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Service Elements

Used to list and filter existing service elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/service
https://flow.manywho.com/api/draw/1/element/service

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Service Element

Used to get an existing service element.

path Parameters
id
required
string <uuid>

The unique identifier for the service element

Responses

200

Success

get /api/draw/1/element/service/{id}
https://flow.manywho.com/api/draw/1/element/service/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "uri": "string",
  • "format": "string",
  • "configurationValues":
    [
    ],
  • "providesLogic": true,
  • "providesViews": true,
  • "providesFiles": true,
  • "providesDatabase": true,
  • "providesIdentity": true,
  • "providesSocial": true,
  • "providesLocation": true,
  • "providesAutoBinding": true,
  • "actions":
    [
    ],
  • "install":
    {
    },
  • "updateByName": true,
  • "sendDecryptedValues": true,
  • "httpAuthenticationUsername": "string",
  • "httpAuthenticationPassword": "string",
  • "httpAuthenticationClientCertificateReference": "string",
  • "httpAuthenticationClientCertificatePasswordReference": "string",
  • "version": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Service Element

Used to delete an existing service element.

path Parameters
id
required
string <uuid>

The unique identifier for the service element

Responses

200

Success

delete /api/draw/1/element/service/{id}
https://flow.manywho.com/api/draw/1/element/service/{id}

Tag Element

The tag element object provides additional runtime data to your page element containers/components and navigation elements/items.

The purpose of the tag element is to add flexibility to your flow application user experience. The components, containers and navigation items in your flow can benefit from having access to the flow state to get more contextual information. For example, if you have a numeric input field, it may be useful to know the possible range or numeric values that can be provided by the end user - where that range depends on logic in the flow. The components, containers and navigation items also supports attributes and these are often sufficient for many use-cases. As a result, only use the tag element if you need information that is very specific to the flow state for particular running user(s).

Create/Update Tag Elements

Used to create new tag elements or update existing ones.

Request Body schema:
contentType
string

The type of Value the Tag holds. As part of the Page layout creation, the Tag will be associated with a Value. The Value bound to this Tag must be of the same content type.

typeElementId
string

The unique identifier for the Type and object or list data must adhere to in structure (the Type basically defines the 'interface' that all objects and lists stored in this Value must implement). This property is only applicable for ContentObject and ContentList content types. As part of the Page layout creation, the Tag will be associated with a Value. The Value bound to this Tag must be of the same Type.

updateByName
boolean

Indicates if the platform should attempt to find a Tag with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/tag
https://flow.manywho.com/api/draw/1/element/tag

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "contentType": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Tag Elements

Used to list and filter existing tag elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/tag
https://flow.manywho.com/api/draw/1/element/tag

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Tag Element

Used to get an existing tag element.

path Parameters
id
required
string <uuid>

The unique identifier for the tag element

Responses

200

Success

get /api/draw/1/element/tag/{id}
https://flow.manywho.com/api/draw/1/element/tag/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "contentType": "string",
  • "typeElementId": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Tag Element

Used to delete an existing tag element.

path Parameters
id
required
string <uuid>

The unique identifier for the tag element

Responses

200

Success

delete /api/draw/1/element/tag/{id}
https://flow.manywho.com/api/draw/1/element/tag/{id}

Type Element

The type element object defines the structure of objects and lists in the flow.

The purpose of the type element is to allow flow builders to determine the business objects that will be used in the flow. Often the type elements are provided when the flow builder installs a new service element, however, flow builders can define their own type elements as needed to support the objectives of the flow. The type element also provides the bindings back to the service elements that can save, read or delete data of the same structure. As a result, the type element maps from friendly business objects to underlying storage implementations as provided by the service element. The base properties of the type element are outlined here.

Bindings

A binding is used to map properties in the type to database fields in the service. The mapping does not need to be directly to database tables in the service, however, the binding should provide unique identifier information necessary for the service element to put the provided values back to the correct storage locations. The binding is typically pre-configured as part of the type installation process. However, it is possible for flow builders to define bindings manually.

Create/Update Type Elements

Used to create new type elements or update existing ones.

query Parameters
overrideService
boolean
Default: false

Whether to allow updates to a type that is associated with a service

Request Body schema:
serviceElementDeveloperName
string
properties
Array of objects (TypeElementPropertyAPI)

The list of properties for this Type. A property is very similar to a field in a table - it represents the structure of the data that will be stored in Values that use this Type.

bindings
Array of objects (TypeElementBindingAPI)

The list of bindings for the Type. A binding holds the mapping of properties to tables and fields in an underlying Service. A binding is not required for a Type if there is no plan to save the data in an external data store. When creating a binding, you will need to have saved the initial Type first so you have the identifiers for the various properties in the Type that need to be bound.

updateByName
boolean

Indicates if the platform should attempt to find a Type with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

serviceElementId
string
id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/type
https://flow.manywho.com/api/draw/1/element/type

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "serviceElementDeveloperName": "string",
  • "properties":
    [
    ],
  • "bindings":
    [
    ],
  • "updateByName": true,
  • "serviceElementId": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

List Type Elements

Used to list and filter existing type elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/draw/1/element/type
https://flow.manywho.com/api/draw/1/element/type

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Type Element

Used to get an existing type element.

path Parameters
id
required
string <uuid>

The unique identifier for the type element

Responses

200

Success

get /api/draw/1/element/type/{id}
https://flow.manywho.com/api/draw/1/element/type/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "serviceElementDeveloperName": "string",
  • "properties":
    [
    ],
  • "bindings":
    [
    ],
  • "updateByName": true,
  • "serviceElementId": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string"
}

Delete Type Element

Used to delete an existing type element.

path Parameters
id
required
string <uuid>

The unique identifier for the type element

Responses

200

Success

delete /api/draw/1/element/type/{id}
https://flow.manywho.com/api/draw/1/element/type/{id}

Value Element

The value element object stores data collected in the flow state.

The purpose of the value element is to allow flow builders to determine how data collected from running user(s) or external services will be stored and used. The value element represents the memory for the flow application so data gathered can be later saved, updated, or viewed. The base properties of the value element are outlined here.

Create/Update Value Elements

Used to create new value elements or update existing ones.

Request Body schema:
isFixed
boolean

Indicates if the value of the Value can be changed by operations in the Flow or from outside systems. If this property is set to 'true', the Value will act like a 'constant' - i.e. it can't be changed by anyone except the Flow author at design time.

isEncrypted
boolean
isVersionless
boolean
access
string

Sets the level of access this Value has to change. In many situations, Values can only be changed by the operations defined in your Flow and the value is not exposed outside of the Flow. Alternatively, you may wish to allow the value of the Value to be assigned at initialization.

contentType
string

The type of content the Value holds.

contentFormat
string
defaultContentValue
string

The default content value for the Value before any operations have been performed. This is for primitive Values.

defaultObjectData
Array of objects (ObjectAPI)

The default object data for the Value before any operations have been performed. This is for Object and List Values.

initializationOperations
Array of objects (OperationAPI)

The operations that should be performed when the object is initialized. Initialization operations are only appropriate for Values of content type ContentObject.

typeElementId
string

The unique identifier for the Type and object or list data must adhere to in structure (the Type basically defines the 'interface' that all objects and lists stored in this Value must implement). This property is only applicable for ContentObject and ContentList content types.

typeElementDeveloperName
string
updateByName
boolean

Indicates if the platform should attempt to find a Value with the same developer name as the one provided and match them up by name as opposed to 'id'. This is useful when creating scripts to create Flows - as you can use the developerName property as the reference as opposed to needing to know the ids of all created Elements.

id
string

The unique identifier for the element. The id should be null for "insert" requests and a valid identifier for "update" requests.

elementType
string

The type of element this metadata represents.

developerName
string

The developer name for the element. This is useful for keeping track of the element in the modelling tool and the API.

developerSummary
string

The developer summary the author provided to give more information about the element

whoCreated
object (BuilderWhoAPI)
whoModified
object (BuilderWhoAPI)
whoOwner
object (BuilderWhoAPI)

Responses

200

Success

post /api/draw/1/element/value
https://flow.manywho.com/api/draw/1/element/value

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "isFixed": true,
  • "isEncrypted": true,
  • "isVersionless": true,
  • "access": "string",
  • "contentType": "string",
  • "contentFormat": "string",
  • "defaultContentValue": "string",
  • "defaultObjectData":
    [
    ],
  • "initializationOperations":
    [
    ],
  • "typeElementId": "string",
  • "typeElementDeveloperName": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

List Value Elements

Used to list and filter existing value elements.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

contentType
Array of strings

Optional. One or more content types to filter by

Responses

200

Success

get /api/draw/1/element/value
https://flow.manywho.com/api/draw/1/element/value

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Value Element

Used to get an existing value element.

path Parameters
id
required
string <uuid>

The unique identifier for the value element

Responses

200

Success

get /api/draw/1/element/value/{id}
https://flow.manywho.com/api/draw/1/element/value/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "isFixed": true,
  • "isEncrypted": true,
  • "isVersionless": true,
  • "access": "string",
  • "contentType": "string",
  • "contentFormat": "string",
  • "defaultContentValue": "string",
  • "defaultObjectData":
    [
    ],
  • "initializationOperations":
    [
    ],
  • "typeElementId": "string",
  • "typeElementDeveloperName": "string",
  • "updateByName": true,
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    }
}

Delete Value Element

Used to delete an existing value element.

path Parameters
id
required
string <uuid>

The unique identifier for the value element

Responses

200

Success

delete /api/draw/1/element/value/{id}
https://flow.manywho.com/api/draw/1/element/value/{id}

List Value Element References

Used to list and filter value element references, which are in a condensed format to help flow builders create merge fields in content.

Supported Element Types

VARIABLE: A reusable value containing data of the specified content type LITERAL: A simple, often single use value type containing a text or numeric value

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of elements where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of elements where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
contentType
Array of strings

Optional. One or more content types to filter by

elementType
Array of strings

Optional. One or more element types to filter by

id
Array of strings <uuid>

Optional. The ID of a value to filter by

typeElementId
Array of strings <uuid>

Optional. The ID of a type to filter by

access
Array of strings

Optional. The access type to filter by

filter
string

The filter used for querying

isFixed
boolean
Default: false

Optional. Whether to filter by fixed values

search
string

Optional. A search term to filter the results by

flow
string <uuid>

Optional. The ID of a flow to filter by

Responses

200

Success

get /api/draw/1/element/value/reference
https://flow.manywho.com/api/draw/1/element/value/reference

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Notifications

The notifications API allows you to view any notifications sent to your or inside your tenant.

List Notifications

Get all the notifications that have been sent from inside a tenant

query Parameters
type
string

Filter by type, currently supports: delete_all, delete_tenant, fault, password_reset, tenant_creation, warning

Responses

200

Success

get /api/notifications/1
https://flow.manywho.com/api/notifications/1

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

List Notifications for User

Get all the unread notifications that have been sent to the currently logged in user, across all tenants

query Parameters
type
string

Filter by type, currently supports: delete_all, delete_tenant, fault, password_reset, tenant_creation, warning

includeRead
boolean
Default: false

Also include read eamil.

Responses

200

Success

get /api/notifications/1/me
https://flow.manywho.com/api/notifications/1/me

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Finds a notification for the current user

Finds the notification and marks it as read

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/notifications/1/{id}
https://flow.manywho.com/api/notifications/1/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "tenant":
    {
    },
  • "userId": "string",
  • "content": "string",
  • "subject": "string",
  • "type": "string",
  • "createdAt": "2020-05-06T12:04:59Z",
  • "id": "string",
  • "isRead": true
}

Mark all notifications as read for the current user

Marks all the notifications for the current user as read

Responses

200

Success

post /api/notifications/1/me/read
https://flow.manywho.com/api/notifications/1/me/read

Package

The packaging API allows you to move a Flow from one tenant to another. This can be handy for a few example reasons:

  • You have Sub-Tenants that you use for testing or team based development of Flows. You then have a master tenant for all “production” Flows.
  • You have a library of useful Flows that you want to distribute as templates.
  • You want to create a “store” of Flows that can be used by your customers to help them leverage and adapt your existing intellectual property.
A few things to consider with packaging:
  1. The source Tenant should be used for editing. If you make changes in the target Tenant and attempt to apply those back to the source, you can accidentially overwrite changes in the source, not applied in the target.
  2. Packaging overwrites the existing Flow with the same Flow identifier. As a result, you can apply upgrades to a target Tenant.
  3. If you plan to use a Service in multiple Tenants, make sure you create the Service in the source Tenant and distribute a Flow package for all target Tenants. If a Service is installed in each Target Tenant, it will be duplicated as we do not “merge” Services even if they point to the same Service end-point.
  4. Do not refresh the Service in the Target Tenant if you are simply changing the endpoint URL. Packaging only pulls in the Types that are used by the Flow. If you refresh the whole Service in the Target Tenant, you can end up with duplicate Types.
  5. When you export a Flow Package, you will receive a String that contains all the information needed to execute your Flow.
  6. We do not automatically Package sub-Flows.
  7. You can only export a package of the Flow if that Flow has a SnapShot (generated by either Running or Publishing the Flow).
The package file should never be altered. Please refer to the SnapShot APIs if you need to get information about your Flows.

Create Package for Flow

Create a package of the latest version of a flow snapshot

path Parameters
id
required
string

The ID of the flow

query Parameters
nullPasswords
boolean
Default: false

Whether the package should include password values.

Responses

200

Success

get /api/package/1/flow/{id}
https://flow.manywho.com/api/package/1/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
"string"

Create Package for Flow Version

Get the package of a specific version of a Flow Snapshot

path Parameters
id
required
string

The ID of the flow

version
required
string

The version of the flow

query Parameters
nullPasswords
boolean
Default: true

Whether the package should include password values.

Responses

200

Success

get /api/package/1/flow/{id}/{version}
https://flow.manywho.com/api/package/1/flow/{id}/{version}

Response samples

Content type
Copy
Expand all Collapse all
"string"

Import Package

This allows you to import a flow package into a Tenant. It’s important to note that this is not the same as cloning a flow. If you import a flow package into a tenant that contains a flow with the same flow ID, the flow in the target tenant will be overwritten with the flow package being imported.

query Parameters
isSnapshot
boolean
Default: false

Optional. Whether the package should be imported directly as a snapshot, and not modelling data

isActive
boolean
Default: false

Optional. Whether the package should be imported as an active snapshot (isSnapshot must be true to take effect)

isDefault
boolean
Default: false

Optional. Whether the package should be immediately made the default version (isSnapshot must be true to take effect)

uriMapping
Array of objects (UriMapping)
overwriteExisting
boolean
Default: true

Whether to overwrite any elements that already exist in the tenant with the versions included in the package. Enabled by default.

Request Body schema:

The package content

string

The package content

Responses

200

The package was successfully imported

409

The package wasn't imported, as there are conflicting elements in the tenant

post /api/package/1/flow
https://flow.manywho.com/api/package/1/flow

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

Import Package with Flow Sharing Token

Import a flow via a unique sharing token

query Parameters
isSnapshot
boolean
Default: false

Optional. Whether the package should be imported directly as a snapshot, and not modelling data

isActive
boolean
Default: false

Optional. Whether the package should be imported as an active snapshot (isSnapshot must be true to take effect)

isDefault
boolean
Default: false

Optional. Whether the package should be immediately made the default version (isSnapshot must be true to take effect)

overwriteExisting
boolean
Default: true

Whether to overwrite any elements that already exist in the tenant with the versions included in the package. Enabled by default.

Request Body schema:
token
string

Responses

200

The package was successfully imported

409

The package wasn't imported, as there are conflicting elements in the tenant

post /api/package/1/shared/flow
https://flow.manywho.com/api/package/1/shared/flow

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "dateCreated": "2020-05-06T12:04:59Z",
  • "dateModified": "2020-05-06T12:04:59Z",
  • "whoCreated":
    {
    },
  • "whoModified":
    {
    },
  • "whoOwner":
    {
    },
  • "alertEmail": "string",
  • "isActive": true,
  • "isDefault": true,
  • "comment": "string",
  • "restrictions":
    {
    },
  • "editingToken": "string",
  • "id":
    {
    },
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "allowJumping": true,
  • "stateExpirationLength": 0,
  • "authorization":
    {
    }
}

Get Flow Sharing Token

Get the sharing token for the last published version of a flow

path Parameters
flow
required
string <uuid>
query Parameters
nullPasswords
boolean

Whether the shared package should include password values.

Responses

200

Success

post /api/package/1/flow/{flow}/share
https://flow.manywho.com/api/package/1/flow/{flow}/share

Response samples

Content type
Copy
Expand all Collapse all
{
  • "token": "string"
}

Get Flow Version Sharing Token

Get the sharing token for a specific version of a flow

path Parameters
flow
required
string <uuid>
version
required
string <uuid>
query Parameters
nullPasswords
boolean

Whether the shared package should include password values.

Responses

200

Success

post /api/package/1/flow/{flow}/{version}/share
https://flow.manywho.com/api/package/1/flow/{flow}/{version}/share

Response samples

Content type
Copy
Expand all Collapse all
{
  • "token": "string"
}

Play

Delete Player

Delete a player by name

path Parameters
name
required
string
tenantId
required
string

Responses

200

Success

delete /{tenantId}/play/{name}
https://flow.manywho.com/{tenantId}/play/{name}

Update Player

The player content should be sent as application/x-www-form-urlencoded; charset=UTF8 request with the body of the request set to =player content goes here

path Parameters
tenantId
required
string <uuid>
playerName
required
string
Request Body schema: application/x-www-form-urlencoded
player
string

Responses

200

Success

post /{tenantId}/play/{playerName}
https://flow.manywho.com/{tenantId}/play/{playerName}

Get Player

Get the contents of a player by name

path Parameters
playerName
required
string
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/play/{playerName}
https://flow.manywho.com/{tenantId}/play/{playerName}

Get Players

Get the names of all the players available in this tenant

path Parameters
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/player
https://flow.manywho.com/{tenantId}/player

Response samples

Content type
Copy
Expand all Collapse all
[
  • "string"
]

Get Players

Get the names of all the players available in this tenant

path Parameters
tenantId
required
string <uuid>

Responses

200

Success

get /{tenantId}/play
https://flow.manywho.com/{tenantId}/play

Response samples

Content type
Copy
Expand all Collapse all
[
  • "string"
]

Invoker

List Invoker Requests

Get the metadata for every request sent to a Service

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests
https://flow.manywho.com/api/service/1/requests

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Get Invoker Requests

Get the metadata for a specific request sent to a service

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/service/1/requests/{id}
https://flow.manywho.com/api/service/1/requests/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "tenantId": "string",
  • "stateId": "string",
  • "content": "string",
  • "method": "string",
  • "uri": "string",
  • "authorizationHeader": "string",
  • "mapElementId": "string",
  • "sequenceNumber": 0,
  • "createdAt": "2020-05-06T12:04:59Z",
  • "responses":
    [
    ],
  • "failures":
    [
    ],
  • "attributes":
    {
    }
}

Retry Invoker Requests

Send the request to the service again

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/service/1/requests/{id}/retry
https://flow.manywho.com/api/service/1/requests/{id}/retry

List Flow Invoker Requests

Get the metadata for every request sent to a Service from a specific Flow

path Parameters
id
required
string <uuid>

The flow ID

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/flow/{id}
https://flow.manywho.com/api/service/1/requests/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List Flow Version Invoker Requests

Get the metadata for every request sent to a Service from a specific version of a Flow

path Parameters
id
required
string <uuid>

The flow ID

version
required
string <uuid>

The flow version

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/flow/{id}/{version}
https://flow.manywho.com/api/service/1/requests/flow/{id}/{version}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

List State Invoker Requests

Get the metadata for every request sent to a Service from a specific State

path Parameters
id
required
string <uuid>

The state ID

query Parameters
pageSize
integer <int32>
Default: 10

The number of service requests to return

page
integer <int32>
Default: 1

The current page of service requests

orderBy
string
Default: "createdAt"

Property to order service requests by, defaults to "createdAt"

orderDirection
string
Default: "DESC"

ASC or DESC, defaults to DESC

Responses

200

Success

get /api/service/1/requests/state/{id}
https://flow.manywho.com/api/service/1/requests/state/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "meta":
    {
    },
  • "links":
    {
    },
  • "items":
    [
    ]
}

Cultures

The content value culture object represents a language or brand supported by the tenant.

Content value cultures are used to specify the language/brand options that are available for the tenant. By default all tenants have a content value culture for USA (English). However, for multi-national/language use-cases, others can be specified. They follow the ISO conventions for language. However, the platform also supports a fourth variation on the standard ISO properties; this is brand. As a result, content value culture objects can also be used to specify white-labelling or single language variations on flow content.

Create/Update Content Value Culture

Used to create new content value cultures or update existing ones.

Request Body schema:
id
string

The id for the culture.

developerName
string

The developer name for the culture.

developerSummary
string

The developer summary for the culture.

brand
string

The brand for the culture.

language
string

The language for the culture.

country
string

The country for the culture.

variant
string

The variant for the culture.

Responses

200

Success

post /api/translate/1/culture
https://flow.manywho.com/api/translate/1/culture

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "brand": "string",
  • "language": "string",
  • "country": "string",
  • "variant": "string"
}

List Content Value Cultures

Used to get existing content value cultures.

Responses

200

Success

get /api/translate/1/culture
https://flow.manywho.com/api/translate/1/culture

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Content Value Culture

Used to get an existing content value culture.

path Parameters
id
required
string <uuid>

The unique identifier for the content value culture

Responses

200

Success

get /api/translate/1/culture/{id}
https://flow.manywho.com/api/translate/1/culture/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "id": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "brand": "string",
  • "language": "string",
  • "country": "string",
  • "variant": "string"
}

Delete Content Value Culture

Used to delete an existing content value culture.

path Parameters
id
required
string <uuid>

Responses

200

Success

delete /api/translate/1/culture/{id}
https://flow.manywho.com/api/translate/1/culture/{id}

Flow

The flow translation object provides all of the content elements and properties in a flow that can be translated.

The flow translation object provides every element in the flow that is available for translation. It therefore provides all of the content in the flow, regardless of whether or not the elements are shared (such as value and page elements) or specific to the flow (such as map or navigation elements). The flow translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

List Flow Translations

Used to filter existing flow objects that are available for translation.

Filter

The filter can take the following formats:

  • developerName eq '{developer_name}': Filter the list of flows where the developerName property exactly matches the provided developer name (case insensitive)
  • substringof(developerName, '{developer_name}'): Filter the list of flows where the developerName property partially matches the provided developer name (case insensitive)
query Parameters
filter
string

The filter used for querying

Responses

200

Success

get /api/translate/1/flow
https://flow.manywho.com/api/translate/1/flow

Response samples

Content type
Copy
Expand all Collapse all
[
  • {
    }
]

Get Flow Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{id}
https://flow.manywho.com/api/translate/1/flow/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "editingToken": "string",
  • "id": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "startMapElementId": "string",
  • "navigationElements":
    [
    ],
  • "mapElements":
    [
    ],
  • "pageElements":
    [
    ],
  • "typeElements":
    [
    ],
  • "valueElements":
    [
    ]
}

Map Element

The map element translation object provides all of the content properties in a map element that can be translated.

The map element translation object also includes additional properties to help translators identity the purpose/location of the content being translated.

Update Map Element Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
Request Body schema:
userContentContentValueId
string
statusMessageContentValueId
string
postUpdateMessageContentValueId
string
notAuthorizedMessageContentValueId
string
outcomes
Array of objects (OutcomeTranslationResponseAPI)
id
string
elementType
string
developerName
string
developerSummary
string
contentValueDocument
object (ContentValueDocumentAPI)

Responses

200

Success

post /api/translate/1/flow/{flow}/{editingToken}/element/map
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/map

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "userContentContentValueId": "string",
  • "statusMessageContentValueId": "string",
  • "postUpdateMessageContentValueId": "string",
  • "notAuthorizedMessageContentValueId": "string",
  • "outcomes":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Get Map Element Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{flow}/{editingToken}/element/map/{id}
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/map/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "userContentContentValueId": "string",
  • "statusMessageContentValueId": "string",
  • "postUpdateMessageContentValueId": "string",
  • "notAuthorizedMessageContentValueId": "string",
  • "outcomes":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Navigation Element

This element allow you to have one or more translations for the element navigation. The navigation element translation will show the information in runtime depending on which culture is choose when the flow runs.

Update Navigation Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
Request Body schema:
labelContentValueId
string
navigationItems
Array of objects (NavigationItemTranslationResponseAPI)
id
string
elementType
string
developerName
string
developerSummary
string
contentValueDocument
object (ContentValueDocumentAPI)

Responses

200

Success

post /api/translate/1/flow/{flow}/{editingToken}/element/navigation
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/navigation

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "labelContentValueId": "string",
  • "navigationItems":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Get Navigation Translation

path Parameters
editingToken
required
string <uuid>
flow
required
string <uuid>
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/flow/{flow}/{editingToken}/element/navigation/{id}
https://flow.manywho.com/api/translate/1/flow/{flow}/{editingToken}/element/navigation/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "labelContentValueId": "string",
  • "navigationItems":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Page Element

The page element translation object provides all of the content properties in a page element that can be translated.

The page element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Page Translation

Request Body schema:
labelContentValueId
string
pageContainers
Array of objects (PageContainerTranslationResponseAPI)
pageComponents
Array of objects (PageComponentTranslationResponseAPI)
id
string
elementType
string
developerName
string
developerSummary
string
contentValueDocument
object (ContentValueDocumentAPI)

Responses

200

Success

post /api/translate/1/element/page
https://flow.manywho.com/api/translate/1/element/page

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "labelContentValueId": "string",
  • "pageContainers":
    [
    ],
  • "pageComponents":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Get Page Transation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/page/{id}
https://flow.manywho.com/api/translate/1/element/page/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "labelContentValueId": "string",
  • "pageContainers":
    [
    ],
  • "pageComponents":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Translate

When building flows on the platform, all “content” is automatically separated from “logic”. This means that all flows are automatically ready for internationalization. The result being that you can write one flow, but adjust the content accordingly for each content value culture needed.

The Translate APIs allow builders to manage content translations for all flows and elements.

Type Element

The type element translation object provides all of the content properties in a type element that can be translated.

The type element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Type Translation

Request Body schema:
properties
Array of objects (PropertyTranslationResponseAPI)
id
string
elementType
string
developerName
string
developerSummary
string
contentValueDocument
object (ContentValueDocumentAPI)

Responses

200

Success

post /api/translate/1/element/type
https://flow.manywho.com/api/translate/1/element/type

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "properties":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Get Type Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/type/{id}
https://flow.manywho.com/api/translate/1/element/type/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "properties":
    [
    ],
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Value Element

The value element translation object provides all of the content properties in a value element that can be translated.

The value element translation object also includes additional properties to help translators identify the purpose/location of the content being translated.

Update Value Translation

Request Body schema:
contentType
string
contentFormatContentValueId
string
defaultContentValueContentValueId
string
id
string
elementType
string
developerName
string
developerSummary
string
contentValueDocument
object (ContentValueDocumentAPI)

Responses

200

Success

post /api/translate/1/element/value
https://flow.manywho.com/api/translate/1/element/value

Request samples

Content type
No sample

Response samples

Content type
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "contentFormatContentValueId": "string",
  • "defaultContentValueContentValueId": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}

Get Value Translation

path Parameters
id
required
string <uuid>

Responses

200

Success

get /api/translate/1/element/value/{id}
https://flow.manywho.com/api/translate/1/element/value/{id}

Response samples

Content type
Copy
Expand all Collapse all
{
  • "contentType": "string",
  • "contentFormatContentValueId": "string",
  • "defaultContentValueContentValueId": "string",
  • "id": "string",
  • "elementType": "string",
  • "developerName": "string",
  • "developerSummary": "string",
  • "contentValueDocument":
    {
    }
}